package com.woniuxy.ptapp.infra.model;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.Valid;

/**
 * <p>
 * 课程订单
 * </p>
 *
 * @author wangdong
 * @since 2022-07-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="DietOrder对象", description="课程订单")
public class ClassesOrder implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    @ApiModelProperty(value = "订单编号")
    private String orderNum;

    @ApiModelProperty(value = "学员ID")
    private Integer studentId;

    @ApiModelProperty(value = "场馆ID")
    private Integer venueId;

    @ApiModelProperty(value = "学员名称")
    private String studentName;

    @ApiModelProperty(value = "总价格")
    private BigDecimal price;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @ApiModelProperty(value = "上课时间")
    private String classTime;

    @ApiModelProperty(value = "下单时间")
    private String orderDate;

    @ApiModelProperty(value = "课程ID")
    private Integer classesId;

    @ApiModelProperty(value = "课程名称")
    private String classesName;

    @ApiModelProperty(value = "场馆接单时间")
    private String venueReceiveDate;

    @ApiModelProperty(value = "教练接单时间")
    private String coachReceiveDate;

    @ApiModelProperty(value = "场馆不接单原因")
    private String venueRefuseReason;

    @ApiModelProperty(value = "教练不接单原因")
    private String coachRefuseReason;

    @ApiModelProperty(value = "取消时间")
    private String cancelDate;

    @ApiModelProperty(value = "是否评价（0 未评价 1 已评价）")
    private Integer evaluate;

    @ApiModelProperty(value = "（0 代付款 1已付款 2 场馆接单 3 待上课 4已完成 5 已取消 6 教练接单 7 场馆拒绝 8 教练拒绝 9 退款中 10 已退款）")
    private Integer state;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "教练名称")
    private String coachName;

    @ApiModelProperty(value = "场馆名")
    private String venueName;

    @ApiModelProperty(value = "教练ID")
    private Integer coachId;

    @ApiModelProperty(value = "支付时间")
    private String payTime;

    @ApiModelProperty(value = "是否违约(0.没有违约，1违约)")
    private Integer isBreach;

    @ApiModelProperty(value = "违约金")
    private BigDecimal penalty;

    @ApiModelProperty(value = "违约原因")
    private String penaltyReason;

    @ApiModelProperty(value = "违约方")
    private String penaltyMan;

    @ApiModelProperty(value = "课程结束时间")
    private String classesEndtime;

    @ApiModelProperty(value = "支付方式")
    private Integer payment;

}
